#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=8005;

int n,q;
int t[MAXN];

struct node{
	int pre,id;
}a[MAXN];
bool cmp(node x,node y){
	if(x.pre!=y.pre) return x.pre<y.pre;
	return x.id<y.id;
}

int main(){
	cin >> n >> q;
	for(int i=1;i<=n;i++){
		cin >> a[i].pre;
		a[i].id=i;// 记录输入坐标（初始坐标）
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++) // 通过旧坐标 查询现坐标
		t[a[i].id]=i;// 记录排序坐标（新坐标）
	for(int i=1;i<=q;i++){
		int op,x,v;
		cin >> op;
		if(op == 1){// 单点修改
			cin >> x >> v;
			a[t[x]].pre=v;
			for(int j=n;j>=2;j--)
				if(cmp(a[j],a[j-1])){
					node temp=a[j];
					a[j]=a[j-1];
					a[j-1]=temp;
				}//向前扫，处理改小的情况
			for(int j=2;j<=n;j++)
				if(cmp(a[j],a[j-1])){
					node temp=a[j];
					a[j]=a[j-1];
					a[j-1]=temp;
				}//向后扫，处理改大的情况
			for(int i=1;i<=n;i++)
				t[a[i].id]=i;//更新 新坐标
		} else{
			cin >> x;
			cout << t[x] << endl;
		}
	}
	return 0;
}